TThread vs BeginThread
Otázka od: Andreas Bednarek
19. 11. 2004 10:56
Ahoj, prosim o radu
Muzu ukoncit vlakno vytvorene takto
MyThread := TThread.Create(...)
f-ci TerminateThread?
Jedna se o to, ze pouzivam (musim) 3rd party knihovnu, ktera nekdy zatuhne,
proto ji taky poustim v threadu, delam to pomoci BeginThread, ted probiha lehky
refaktoring kodu a pouzil bych asi TThread, jina vlakna, ktera spoustim muzou
zase profitovat s vlastnosti Terminated.
Jen si proste nejsem jisty co udela TerminateThread(MyThread.Handle) kdyz uz je
to nutne a bude-li to mit vliv na udalost OnTerminate.. Rekl bych, ze s klidkem
provedu
TerminateThread(MyThread.Handle);
MyThread.Free;
a vse ok? OnTerminate se asi nevyvola.
Co po TerminateThread volat MyThread.Terminate misto Free?
Dik za radu odjakziva pouzivam BeginThread, s TThread nemam zkusenosti.
A.B.
D4 WXPPro
Odpovedá: delphin@post.cz
19. 11. 2004 11:36
> Jen si proste nejsem jisty co udela TerminateThread(MyThread.Handle) kdyz
uz je to nutne a bude-li to mit vliv na udalost OnTerminate.. Rekl bych, ze
s klidkem provedu
TerminateThread nasilne ukonci vlakno a protoze se vlakno nemuze ukoncit
regulerne, zpravidla posleze dojde v prislusne procesu k nepredvidatelnym
chybam. OnTerminate se nevyvola, protoze ho nema kdo zavolat.